//路由配置
import Vue from 'vue'
import VurRouter from 'vue-router'
//使用插件
Vue.use(VurRouter);
//引入路由配置
import routes from './routes';
//引入store仓库
import store from '@/store'
//配置路由
let router = new VurRouter({
    routes,
    scrollBehavior(to, from, savedPosition) {
        // 始终滚动到顶部
        return { y: 0 }
    },
})
//全局前置路由守卫
router.beforeEach(async (to,from,next)=>{
    //to:到哪里
    //from:来自哪
    //next:放行  next()放行  next('/login')放行到指定的路由  next(false)中断当前的导航
    //用户登录了，才会有token，未登录一定不会有token
    let token =store.state.user.token;
    //用户信息
    let name=store.state.user.userInfo.name;
    //用户已经登录了
    if(token){
        //不让用户在去login页面了
        if(to.path=='/login'){
            //首页
            next('/home')
        }else{
            //登录有用户信息就放行，没有就派发获取用户信息
            if(name){
                next()
            }else{
                try {
                    //获取用户信息在首页展示
                    await store.dispatch('getUserInfoList');
                    //放行
                    next();
                } catch (error) {
                   //token失效了获取不到用户信息，从新登录
                   //1.清除token
                   await store.dispatch('userLogout')
                   //放行
                   next('/login');
                }
            }
           
            
        }
    }else{
        //未登录:不能去交易相关、不能去支付相关【pay|paysuccess】、不能去个人中心
        let path= to.path;
        if(path.indexOf('/trade')!=-1 || path.indexOf('/pay')!=-1 || path.indexOf('/center')!=-1){
            next('/login');//?redirect='+path
        }else{
            next()
        }
       
    }
})

export default  router;